package com.demo2.todo.service;

import com.demo2.todo.model.dto.TodoRequest;
import com.demo2.todo.model.dto.TodoResponse;
import com.demo2.todo.model.entity.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author evi
 */
@Service
public interface TodoService {
    List<TodoResponse> getAllTodos(User user);
    TodoResponse getTodoById(Long id, User user);
    TodoResponse createTodo(TodoRequest request, User user);
    TodoResponse updateTodo(Long id, TodoRequest request, User user);
    void deleteTodo(Long id, User user);
    List<TodoResponse> getTodosByUserId(Long userId);

    List<TodoResponse> getAllTodosForAdmin();

    // 新增：切换待办事项状态
    @Transactional
    TodoResponse toggleStatus(Long id, String status, User user);

    // 新增：创建分享令牌
    @Transactional
    String createShareToken(Long id, User user);

    // 新增：通过分享令牌获取待办事项
    @Transactional(readOnly = true)
    TodoResponse getSharedTodoByToken(String token);

    // 在TodoServiceImpl中添加
    @Transactional(readOnly = true)
    List<TodoResponse> getPublicTodos();
}